package com.leyou.common.pojo;

import org.springframework.util.StringUtils;

import javax.xml.transform.Result;
import java.util.HashMap;

/**
 * 操作消息提醒
 */
public class ResultInfo extends HashMap<String ,Object> {

    private static final long serialVersionUID = -926449011098073789L;

    /**  响应状态码  */
    private static final String CODE = "code";
    /** 响应解释说明 */
    private static final String MSG = "msg";
    /** 响应数据对象 */
    private static final String DATA = "data";

    /**
     * 响应状态类型
     */
    public enum Type{
        SUCCESS(0),
        ERROR(500);
        private final int value;
        Type(int value){
            this.value = value;
        }
    }

    /**
     * 初始元一个返回结果 ResultInfo
     * @param type
     * @param msg
     * @param data
     */
    public ResultInfo(Type type,String msg,Object data){
        super.put(CODE,type.value);
        super.put(MSG,msg);
        if(data != null){
            super.put(DATA,data);
        }
    }

    /**
     * 构建一个没有返回数据的放回结果
     * @param type
     * @param msg
     */
    public ResultInfo(Type type,String msg){
        super.put(CODE,type.value);
        super.put(MSG,msg);
    }

    /**
     * 返回一个成功的结果
     * @param msg
     * @return
     */
    public static ResultInfo success(String msg){
        return new ResultInfo(Type.SUCCESS,msg);
    }

    /**
     * 返回一个成功结果
     * @return
     */
    public static ResultInfo success(){
        return success("操作成功");
    }

    /**
     * 返回一个错误结果
     * @param msg
     * @return
     */
    public static ResultInfo error(String msg){
        return new ResultInfo(Type.ERROR,msg);
    }

    /**
     * 返回一个错误结果
     * @return
     */
    public static ResultInfo error(){
        return error("操作失败");
    }

    /**
     * 返回成功结果带有数据的
     * @param obj
     * @return
     */
    public static ResultInfo success(Object obj){
        return new ResultInfo(Type.SUCCESS,"操作成功",obj);
    }
}
